本章節會提及Vue在前端中運用指令對標籤做判斷
會提及的指令有
引號內回傳true/false用以判斷該標籤是否呈現
(可以在使用條件判斷來決定是否呈現)
範例:
<div id="root">
    <button @click="change">顯示/隱藏</button>
    <h2 v-show="show" >Hello, {{name}}</h2>
</div>
<script>
    var vm = new Vue({
        el : "#root",
        data : {
            name : "Adam",
            show : true,
        },
        methods : {
            change(){
                this.show = !this.show
            }
        }
    })
</script>
在使用v-show:的時候
其決定display的狀態是否呈現
顯示
隱藏
從頁面上來說,其內容還是在html上存在
引號內可做判斷, 條件成立下將標籤呈現出來
<body>
    <div id="root">
        <button class="btn btn-info m-2" @click="plus">下一行</button>
        <button class="btn btn-info m-2" @click="redirect">重製</button>
        <h2 v-if="num > 1 " >名稱 :  {{name}}</h2>
        <h2 v-if="num > 2 " >性別 :  {{sex}}</h2>
        <h2 v-if="num > 3 " >年紀 :  {{age}}</h2>
    </div>
    <script>
        var vm = new Vue({
            el : "#root",
            data : {
                num : 1,
                name : "Adam",
                sex : "男",
                age : 24
            },
            methods : {
                plus() {
                    this.num++;
                },
                redirect() {
                    this.num = 1;
                }
            }
        })
    </script>
</body>
在條件成立的情況下,內容才會呈現出來
跟v-show不同的是
其呈現方式並非靠display控制
而是vue在虛擬DOM時做判斷是否呈現
所以條件不成立的情況下
html是看不到該標籤內容的
其標籤內容會用代替
利用v-else-if/v-else可以稍微提升vue在前端時判斷的次數
v-if在任何情況的會強制判斷
然兒v-else-if會依照v-if或是v-else-if判斷不成立的其況下接續判斷
v-else即是最後的處理
<body>
    <div id="root">
        <button @click="plus">plus</button>
        <button @click="reduce">reduce</button>
        <template v-if="num > 1">    
            <p>{{name}}</p>
            <p>{{age}}</p>
            <p>{{birth}}</p>
        </template>
        <div v-if="num > 1">    
            <p>name : {{name}}</p>
            <p>age : {{age}}</p>
            <p>birth : {{birth}}</p>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el : "#root",
            data : {
                num : 1,
                name : "Adam",
                sex : "男",
                age : 24
            },
            methods : {
                plus() {
                    this.num++;
                },
                reduce() {
                    this.num--;
                }
            }
        })
    </script>
</body>
template與div不同的是
tempalte和v-if的搭配不會包住判斷的標籤

可以從畫面中發現Vue不會將template的標籤帶到畫面上
但div卻會還會存在
html編譯完後會用div將其包住
v-if :
適用於 : 切換頻率較低的場景
特點 : 不展示的 DOM直接被移除
注意 : v-if, v-else-if, v-else可以搭配使用, 但結構不能被打斷
v-show :
適用於 : 切換頻率較高的場景
特點 : 不展示的 DOM不移除, 會隱藏
備註 :
使用 v-if時, 元素無法獲取, v-show一定可以獲取到